package com.wewoo.log4e.core.annotation;


import com.wewoo.log4e.core.enums.HandleType;
import com.wewoo.log4e.core.enums.OperationType;
import com.wewoo.log4e.core.enums.OperationUnit;
import com.wewoo.log4e.core.executor.LogExecutor;

import java.lang.annotation.*;

/**
 * @desc 操作记录注解
 * @author tangjin
 * @date 2022/2/14 14:47
 **/
@Documented
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Log4e {

    /**
     * 方法描述,可使用占位符获取参数:{{tel}}
     */
    String detail() default "";

    /**
     * 日志等级:自己定，此处分为1-9
     */
    int level() default 0;

    /**
     * 操作类型(enum):主要是select,insert,update,delete
     */
    OperationType operationType() default OperationType.UNKNOWN;

    /**
     * 被操作的对象(此处使用enum):可以是任何对象，如表名(user)，或者是工具(redis)
     */
    OperationUnit operationUnit() default OperationUnit.UNKNOWN;

    /**
     * 处理类型
     */
    HandleType handleType() default HandleType.FRONT;

    /**
     * @return lock 执行器
     */
    Class<? extends LogExecutor> executor() default LogExecutor.class;
}
